//: Playground - noun: a place where people can play

import UIKit


//: ### 控制转移语句 continue、break、fallthrough、return、throw
print("_____________________ 控制转移语句 _____________________________")
//: continue 立刻停止本次循环，进行下一次循环
//: break 立刻结束整个控制流，当你想更早的结束 某个 switch 代码块或者循环时。
//: fallthrough fallthrough关键字不会检查它下一个将会落入执行的 case 中的匹配条件。fallthrough简单地使代码继续连接到下一个 case 中的代码，这和 C 语言标准中的switch语句特性是一样的。

let fallthroughNum = 5

switch fallthroughNum {
case 1,2,3,4,56,67,878,9,5:
    print("进来了")
   fallthrough
case 7:
    print("哎呦不错呦")
default:
     print("default")
}

//: ### 带标签的语句  就在 if for while 语句前加上一个 标签名和冒号， 就像是用一个变量把判断语句接了一下的感觉
//: 标签名字 : while condition {  statements }

var labelNumOne:Int = 10
let labelNumTwo:Int = 5

whileLabel: while labelNumOne < 30{
    print("labelNumOne-\(labelNumOne)")
    labelNumOne += 1
    
    ifLabel: if labelNumTwo == labelNumOne {
        break whileLabel //while 循环结束
    }
}


//: 提前退出  不同于if语句，一个guard语句总是有一个else从句，如果条件不为真则执行else从句中的代码, guard 结合函数一起使用在不满足情况下，提前退出函数 （可选绑定测试 给属性用的）
print("_____________________ 提前退出 _____________________________")

func guardFunc(x:Int?){
    guard let x = x, x > 0 else {
        // 变量不符合条件判断时，执行下面代码
        return
    }
}

//: ### 检测 API 可用性
print("_____________________ 检测 API 可用性 _____________________________")
if #available(iOS 10, macOS 10.12, *) {
    // 在 iOS 使用 iOS 10 的 API, 在 macOS 使用 macOS 10.12 的 API
} else {
    // 使用先前版本的 iOS 和 macOS 的 API”
}

